package leetcode;

import jdk.nashorn.internal.objects.NativeNumber;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.Vector;
import java.util.stream.IntStream;

/**
 * @author 真香
 * @create 2022-03-19 20:18
 * 数据结构
 *
 *
 */
public class DataStructure {

    public static void main(String[] args){
        int[] nums ={1,1,3,4,3,4,-1};
        //System.out.println(containsDuplicate(nums));
        int result = maxSubArray(nums);
        System.out.println(result);
    }



    public static int maxSubArray(int[] nums){

        // 处理边界情况
        if(nums.length ==0 || nums == null) {
            return 0;
        }
        //
        int res = nums[0];
        int sum = 0;
            for (int num : nums) {
            if (sum > 0) {
                sum +=num;
            } else {
                sum =num;
                res = Math.max(res,sum);
            }
        }
        return res;
    }


    /**
     * 算法
     * 去除指定数组中的重复元素
     *  只能使用原数组
     * @param nums
     */
    public static int removeDuplicate(int [] nums){

        // 判断数组边界 特殊情况
        if (nums.length ==0 || nums ==null) {
            return 0;
        }
        // 因为是升序排列，左指针元素等于右指针元素 左指针++
        int left = 0;
        for (int right = 1; right < nums.length; right++) {
            if (nums[left] != nums[right]) {
               left ++;
               nums[left] = nums[right];

            }
        }
        return ++left;
    }



    /**
     *  检测指定数组中是否包含重复元素
     * @param nums    指定数组
     * @return         包含返回true  不包含 返回false
     */
    public static boolean containsDuplicate(int[] nums) {

       /* Set<Integer> set = new HashSet<>();
        for (int i:nums){
            set.add(nums[i]);
        }
        return set.size() <nums.length ?true :false;*/
        return  Arrays.stream(nums).distinct().count() == nums.length ?false:true;


    }


}
